package yartiss.engine.simulation;

import java.util.List;
import java.util.Map;

import yartiss.engine.simulation.events.EventGenerator;
import yartiss.engine.simulation.partition.IPartitionManager;
import yartiss.engine.simulation.system.ITaskSet;

public interface ISchedulingPolicy {

	public String getPolicyName();
	
	public void setParameters(List<Integer> parameters);
	
	public List<Integer> getParameters();
		
	public ITaskSet createTaskSet();

	public Processor [] chooseNextTasks(Processor [] processors, ITaskSet taskSet, IEnergyProfile energyProfile, long date, EventGenerator evGen);
	
	public IPartitionManager getPartitionManager();
	
	public Map<String, Long> getMetrics();
	
	public ISchedulingPolicy newInstance();
}
